module.exports.afterEach   A
last analyzed

Complexity

Conditions 3
Paths 2

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
nc 2
nop 1
dl 0
loc 6
rs 9.4285
c 1
b 0
f 0
1
//require('env2')('.env'); // optionally store your Evironment Variables in .env
2
3
const seleniumServer = require("selenium-server");
4
const chromedriver = require("chromedriver");
5
const SCREENSHOT_PATH = "./test/e2e/screenshots/";
6
7
// we use a nightwatch.conf.js file so we can include comments and helper functions
8
module.exports = {
9
	"src_folders": [
10
		"test/e2e/specs"// Where you are storing your Nightwatch e2e tests
11
	],
12
	"output_folder": "./test/e2e/reports", // reports (test outcome) output by nightwatch
13
	"end_session_on_fail": true,
14
	"skip_testcases_on_fail": false,
15
	"abortOnAssertionFailure": false,
16
	"selenium": {
17
		"start_process": true, // tells nightwatch to start/stop the selenium process
18
		"server_path": seleniumServer.path,
19
		"host": "127.0.0.1",
20
		"port": 4444, // standard selenium port
21
		"cli_args": {
22
			"webdriver.chrome.driver": chromedriver.path
23
		}
24
	},
25
	"test_settings": {
26
		"default": {
27
			"screenshots": {
28
				"enabled": true, // if you want to keep screenshots
29
				"path": SCREENSHOT_PATH, // save screenshots here
30
				"on_failure" : true,
31
				"on_error" : true,
32
			},
33
			"globals": {
34
				"waitForConditionTimeout": 5000 // sometimes internet is slow so wait.
35
			},
36
			"desiredCapabilities": { // use Chrome as the default browser for tests
37
				"browserName": "chrome"
38
			}
39
		},
40
		"chrome": {
41
			"desiredCapabilities": {
42
				"browserName": "chrome",
43
				"javascriptEnabled": true // turn off to test progressive enhancement
44
			}
45
		}
46
	},
47
	afterEach: function (client, done) {
48
		var weHaveFailures = client.currentTest.results.errors > 0 || client.currentTest.results.failed > 0;
49
50
		console.log(weHaveFailures);
0 ignored issues
show
Debugging Code introduced by
console.log looks like debug code. Are you sure you do not want to remove it?
Loading history...
51
		if (weHaveFailures) {
52
			if (!client.sessionId) {
53
				console.log('Session already ended.');
54
				done();
55
				return;
56
			}
57
58
			var fileName = getFileName(client.currentTest.name);
59
			client.saveScreenshot(fileName, function (result) {
60
				if (!result || result.status !== 0) {
61
					console.log('Error saving screenshot...', result);
0 ignored issues
show
Debugging Code introduced by
console.log looks like debug code. Are you sure you do not want to remove it?
Loading history...
62
				}
63
				client.end(done);
64
			});
65
		} else {
66
			client.end(done);
67
		}
68
	}
69
}
70
71
function padLeft(count) { // theregister.co.uk/2016/03/23/npm_left_pad_chaos/
72
	return count < 10 ? '0' + count : count.toString();
73
}
74
75
var FILECOUNT = 0; // "global" screenshot file count
76
/**
77
 * The default is to save screenshots to the root of your project even though
78
 * there is a screenshots path in the config object above! ... so we need a
79
 * function that returns the correct path for storing our screenshots.
80
 * While we're at it, we are adding some meta-data to the filename, specifically
81
 * the Platform/Browser where the test was run and the test (file) name.
82
 */
83
function imgpath(browser) {
84
	var a = browser.options.desiredCapabilities;
85
	var meta = [a.platform];
86
	meta.push(a.browserName ? a.browserName : 'any');
87
	meta.push(a.version ? a.version : 'any');
88
	meta.push(a.name); // this is the test filename so always exists.
89
	var metadata = meta.join('~').toLowerCase().replace(/ /g, '');
90
	return SCREENSHOT_PATH + metadata + '_' + padLeft(FILECOUNT++) + '_';
91
}
92
93
module.exports.imgpath = imgpath;
94
module.exports.SCREENSHOT_PATH = SCREENSHOT_PATH;
95